// 校验token合法性
const basicAuth = require('basic-auth');
const jwt = require('jsonwebtoken');
const security = require('./tokentime.js').security
class Auth{
    // 存取器
    get m(){
        return (req,res,next)=>{
            // 接收前端提交时在header中传递的token
                    
            const token = basicAuth(req);
            
            if(!token || !token.name){              
                return res.status(401).send({status:401,msg:'没有访问权限'})
            }
            try{
                // 利用jwx.verify进行校验token是否合法，如果合法会返回一个包含uid的对象
                // 如果不合法就会进入到catch中
                const authcode = jwt.verify(token.name,security.secretkey)
            }catch (error){
                if(error.name == "TokenExpiredError"){
                    return res.status(401).send({status:401,msg:'账号过期，请重新登录'})
                }else{
                    return res.status(401).send({status:401,msg:'没有访问权限'})
                }
            }
            //校验成功，调用next方法通知接口可以进行下一步操作，执行回调函数
            next()
        }
    }
}
module.exports = {Auth}